package com.bt7274.service;

import com.bt7274.pojo.InvitationCode;
import com.bt7274.pojo.vo.InvitationCodeVO;

import java.util.List;

/**
 * 邀请码服务接口
 */
public interface InvitationCodeService {

    /**
     * 生成邀请码
     *
     * @param createdBy 创建者ID
     * @param expiresHours 过期时间
     * @return 邀请码实体
     */
    InvitationCode generateInvitationCode(String createdBy, Integer expiresHours);

    /**
     * 获取用户创建的邀请码列表
     *
     * @param createdBy:
     * @return List<InvitationCode>
     * @author galland
     */
    List<InvitationCodeVO> getUserInvitationCodes(String createdBy);

    /**
     * 验证邀请码是否有效
     *
     * @param code:邀请码
     * @return boolean
     * @author galland
     */
    boolean validateInvitationCode(String code);

    /**
     * 根据邀请码获取信息
     *
     * @param code: 邀请码
     * @return InvitationCode
     * @author galland
     */
    InvitationCode getByCode(String code);

    /**
     * 使用邀请码
     *
     * @param code: 邀请码
     * @param usedBy: 使用者
     * @return boolean
     * @author galland
     */
    boolean useInvitationCode(String code, String usedBy);

    /**
     * 清楚过期的邀请码
     *
     * @return int
     * @author galland
     */
    int cleanExpiredCodes();

    /**
     * 检查用户能逗使用邀请码
     *
     * @param userId: 用户ID
     * @return boolean: 是否可以生成
     * @author galland
     */
    boolean canGenerateInvitationCode(String userId);


}
